
Sora Fujimoto
AI Solutions Architect

RoxyBrowserはAPI呼び出しを通じてブラウザ機能を提供し、Selenium、Puppeteer、Playwrightなどの自動化フレームワークと統合できます。そのAPIは、実際のブラウザプロファイルをプログラムで開き、自動化ツールを接続できるように設計されています。APIには、エンドポイントごとに1分間に100回の呼び出しというドキュメント化されたレートリミットがあります。
ソース: https://faq.roxybrowser.org/en/guide/10-API
CapSolverは、ページにキャプチャトークンを挿入できるキャプチャトークンを返す「作成およびポーリング」APIフローを提供しています。CapSolverは以下のキャプチャタイプをサポートしています:
ReCaptchaV2TaskProxyLess、返却値 gRecaptchaResponseReCaptchaV3TaskProxyLess、スコア付きの gRecaptchaResponseAntiTurnstileTaskProxyLess、返却値 token ドキュメントを確認このガイドでは、フレームワークに依存しない実践的なフローを示します。API経由でRoxyプロファイルを開き、自動化フレームワークを接続し、CapSolverでキャプチャを解決し、トークンを挿入して処理を継続します。
RoxyBrowserは、マルチアカウント用のアンチデテクトブラウザで、API自動化やマルチウィンドウ同期機能を備えています。
自動化において、APIが最も関連性のある要素です:
Selenium、Puppeteer、Playwrightの統合をサポートしています。
リクエストには token ヘッダーを含める必要があります。
デフォルトのAPIホストは http://127.0.0.1:50000 です(ポート変更には再起動が必要です)。
CapSolverは2つのAPI呼び出しを通じてキャプチャを解決します:
createTask でキャプチャパラメータを送信getTaskResult でトークンが準備できるまでポーリングreCAPTCHA v2の場合、CapSolverは gRecaptchaResponse を返します。
getTaskResult は1つのタスクに対して120回のクエリに制限されており、タスク作成から5分以内に呼び出さなければなりません。
デフォルトではホストは http://127.0.0.1:50000 です。ポートを変更した場合、RoxyBrowserを再起動する必要があります。
/browser/workspace を使用してワークスペースを取得し、/browser/list_v3 でプロファイルを一覧表示します。
import requests
BASE = "http://127.0.0.1:50000"
HEADERS = {"token": "YOUR_ROXY_API_KEY"}
workspaces = requests.get(f"{BASE}/browser/workspace", headers=HEADERS).json()
workspace_id = workspaces["data"]["rows"][0]["id"]
profiles = requests.get(
f"{BASE}/browser/list_v3",
params={"workspaceId": workspace_id},
headers=HEADERS
).json()
dir_id = profiles["data"]["rows"][0]["dirId"]
/browser/open を呼び出します。応答には以下が含まれます:
ws: 自動化ツール用のWebSocketインターフェースhttp: 自動化ツール用のHTTPインターフェースdriver: Selenium統合用のWebDriverパスヘッドレスモードはサポートされていません。
open_resp = requests.post(
f"{BASE}/browser/open",
json={"workspaceId": workspace_id, "dirId": dir_id, "args": []},
headers=HEADERS
).json()
ws_endpoint = open_resp["data"]["ws"]
http_endpoint = open_resp["data"]["http"]
driver_path = open_resp["data"]["driver"]
返されたエンドポイントを使用してフレームワークを接続します:
driverパスを使用できます。正確な接続手順はフレームワークに依存しますが、ws、http、driverの値は自動化ツールに明示的に提供されます。
import time
import requests
CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"
CAPSOLVER_BASE = "https://api.capsolver.com"
def create_task(task):
payload = {"clientKey": CAPSOLVER_API_KEY, "task": task}
r = requests.post(f"{CAPSOLVER_BASE}/createTask", json=payload)
data = r.json()
if data.get("errorId", 0) != 0:
raise RuntimeError(data.get("errorDescription", "CapSolver error"))
return data["taskId"]
def get_task_result(task_id, delay=2):
while True:
time.sleep(delay)
r = requests.post(
f"{CAPSOLVER_BASE}/getTaskResult",
json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
)
data = r.json()
if data.get("status") == "ready":
return data["solution"]
if data.get("status") == "failed":
raise RuntimeError(data.get("errorDescription", "Task failed"))
def solve_recaptcha_v2(website_url, website_key):
task = {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key
}
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("gRecaptchaResponse", "")
def solve_recaptcha_v3(website_url, website_key, page_action="verify"):
task = {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key,
"pageAction": page_action
}
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("gRecaptchaResponse", "")
def solve_turnstile(website_url, website_key, action=None, cdata=None):
task = {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key
}
# 提供された場合、オプショナルなメタデータを追加
if action or cdata:
task["metadata"] = {}
if action:
task["metadata"]["action"] = action
if cdata:
task["metadata"]["cdata"] = cdata
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("token", "")
参考資料:
API経由でRoxyプロファイルを開き、自動化フレームワークを接続します。
ターゲットページに移動し、サイトキーを抽出します。
例:
const siteKey = document.querySelector(".g-recaptcha")?.getAttribute("data-sitekey");
CapSolverで解決します。
トークンを挿入し、フォームを送信します:
const token = "CAPSOLVER_TOKEN";
const el = document.getElementById("g-recaptcha-response");
el.style.display = "block";
el.value = token;
el.dispatchEvent(new Event("input", { bubbles: true }));
el.dispatchEvent(new Event("change", { bubbles: true }));
reCAPTCHA v3は背景で動作し、ユーザーの操作を必要とせずスコア(0.0〜1.0)を返します。
サイトキーとアクションをページから抽出します:
// サイトキーは通常スクリプトまたはメタタグに含まれます
const siteKey = document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey');
// アクションはgrecaptcha.execute呼び出しで見つかります
// ページソースで: grecaptcha.execute('KEY', {action: 'ACTION'}) を検索
const pageAction = "submit"; // または "login", "register"など
CapSolverで解決:
token = solve_recaptcha_v3(
website_url="https://example.com/login",
website_key="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAA",
page_action="login"
)
トークンを挿入(v2と同じ方法):
const token = "CAPSOLVER_TOKEN";
document.getElementById("g-recaptcha-response").value = token;
// コールバックがある場合、それをトリガー
if (typeof ___grecaptcha_cfg !== 'undefined') {
const clients = ___grecaptcha_cfg.clients;
Object.keys(clients).forEach(key => {
if (clients[key].callback) {
clients[key].callback(token);
}
});
}
Cloudflare Turnstileは、解決が速く(1〜20秒)の現代的なキャプチャ代替手段です。
Turnstileサイトキーを抽出:
const siteKey = document.querySelector('.cf-turnstile')?.getAttribute('data-sitekey');
// オプション: ある場合、actionとcdataを抽出
const action = document.querySelector('.cf-turnstile')?.getAttribute('data-action');
const cdata = document.querySelector('.cf-turnstile')?.getAttribute('data-cdata');
CapSolverで解決:
token = solve_turnstile(
website_url="https://example.com",
website_key="0x4AAAAAAAxxxxxxxxxxxxxxx",
action=action, // オプション
cdata=cdata // オプション
)
Turnstileトークンを挿入:
const token = "CAPSOLVER_TURNSTILE_TOKEN";
// Turnstile応答入力を検索
const input = document.querySelector('input[name="cf-turnstile-response"]');
if (input) {
input.value = token;
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
}
// 代替: 一部のサイトでは別の入力名を使用
const altInput = document.querySelector('input[name="turnstile-response"]');
if (altInput) {
altInput.value = token;
}
getTaskResultは5分以内に120回のポーリングに制限されています。始める準備はできましたか? CapSolverに登録し、初回チャージで6%のボーナスを追加するためのボーナスコード ROXYBROWSER を使用してください!

RoxyBrowserはSelenium、Puppeteer、Playwrightをサポートしていますか?
はい。APIはこれらのフレームワークとの統合を目的として設計されています。
APIトークンとホストはどこで取得できますか?
RoxyBrowserのAPI -> API設定から取得できます。デフォルトホストは http://127.0.0.1:50000 です。
/browser/openはどのような値を返しますか?
自動化ツールで使用されるws、http、driverフィールドを返します。
ヘッドレスモードはサポートされていますか?
いいえ、ヘッドレスモードはサポートされていません。
CapSolverはどのキャプチャタイプをサポートしていますか?
CapSolverはreCAPTCHA v2トークンをどのように返しますか?
ReCaptchaV2TaskProxyLessでタスクを作成し、getTaskResultをポーリングしてgRecaptchaResponseを取得します。
reCAPTCHA v3はv2とどのように異なりますか?](https://www.capsolver.com/blog/reCAPTCHA/extra-parameters-recaptcha)
reCAPTCHA v3はユーザーの操作なしで背景で動作し、スコア(0.0-1.0)を返します。pageActionパラメータが必要で、これはページソース内のgrecaptcha.executeを検索することで見つかります。
Cloudflare Turnstileをどのように解決しますか?](https://www.capsolver.com/blog/Cloudflare/solver-cloudflare-challenge-turnstile-2024)
websiteURLとwebsiteKeyでAntiTurnstileTaskProxyLessタスクを使用します。ウィジェットにmetadata.actionとmetadata.cdataが存在する場合、オプションで追加してください。Turnstileは1〜20秒で解決します。
追加資料:
Turnstileサイトキーをどのように見つけることができますか?
.cf-turnstile要素のdata-sitekey属性を検索してください。Turnstileサイトキーは0x4で始まります。
CapSolverにプロキシが必要ですか?
いいえ、*ProxyLessタスクタイプはCapSolverの内部プロキシインフラストラクチャを使用します。独自のプロキシを使用する場合は、非ProxyLessバージョンを使用してください。
RoxyBrowserは自動化エンドポイントを備えたプロファイルベースのブラウザ環境を提供し、CapSolverはプログラムでキャプチャトークンを提供します。Roxyプロファイルを開き、フレームワークを接続し、CapSolverトークンを挿入することで、信頼性の高いキャプチャ対応の自動化フローを構築できます。
スケーラブルなRustウェブスクレイピングアーキテクチャを学びましょう。リクエスト、スクレイパー、非同期スクレイピング、ヘッドレスブラウザスクレイピング、プロキシローテーション、およびコンプライアンス対応のCAPTCHA処理で。

2026年のデータ・アズ・ア・サービス(DaaS)を理解する。その利点、ユースケース、およびリアルタイムの洞察と拡張性を通じて企業を変革する方法について探る。
